Git使用教程、命令

您所在的位置:网站首页 git cherry-pick 冲突 Git使用教程、命令

Git使用教程、命令

2023-04-02 01:30| 来源: 网络整理| 查看: 265

Git使用教程、命令 Git

本文连接:https://blog.csdn.net/leiduifan6944/article/details/129432110

git官网

https://git-scm.com/

优势:

大部分操作在本地完成,无需联网 完整性保证 尽可能添加数据而不是删除或修改数据 分支操作非常快捷流畅 与linux命令全面兼容 工作区、暂存区、本地库 工作区:编辑、增删改查 暂存区:保存工作区提交上来的记录 本地库:将暂存区的历史记录保存到本地库持久化 工作区 —— git add —— 暂存区 ——git commit —— 本地库 —— push/pull —— 远程库 代码托管中心:远程库 内网:gitlab 外网:github、码云 本地库——push——远程库 远程库——pull——本地库 基本配置 git的配置文件位置: win: c:\users\\.gitconfig linux: /home//.gitconfig # 个人 /etc/gitconfig # 系统全局 # 修改git init时的默认分支为master, 但gitlab上创建仓库时默认分支是main,可以修改git init的默认参数,使其初始化为main 1)、直接修改配置文件 如果已有[init]则修改其下配置,如果没有,则新增,其他配置项不变: ... [init] defaultBranch = main # 修改默认初始化分支 2)、命令设置 git config init.defaultBranch # 查看默认分支 git config --global init.defaultBranch "main" # 设置默认初始化分支,缺省状态默认为“master” 配置项及命令: git config --list # 查看全部配置 git config --global --list # 查看个人配置 git config --system --list # 查看系统配置 git config user.name # 查看用户名 git config user.email # 查看用户邮箱 git config init.defaultBranch # 查看默认分支 # 系统级 git config --global user.name “用户名” # 设置用户名 git config --global user.email “邮箱” # 设置用户邮箱 git config --global init.defaultBranch "main" # 设置默认初始化分支,缺省状态默认为“master” # 用户级、项目级,存放于当前项目.git文件夹下的config文件中;当用户级和系统级同时存在时优先采用用户级;实际开发过程中极少使用用户级 git config user.name “用户名” # 设置用户名 git config user.email “邮箱” # 设置用户邮箱 ssh-keygen # 生成ssh key,用于ssh免密与远程库交互 # 删除配置 git config --global --unset init.defaultbranch 用户名和用户邮箱只用区分用户,可以时不存在的 基本命令 git add [, ] # 提交追踪的文件到仓库,.表示当前目录下所有文件 git commit -m "message" # 为本次代码提交做备注说明,比如做了新增、更新了哪些功能等等 git push origin HEAD:refs/heads/master # 提交到指定分支 master git status # 检查状态 git reset # 撤销git add git log # 查看提交/版本/历史记录 git diff [] # 查看当前工作区的file与仓库中file的不同的地方,就是查看做了哪些修改 git stash # 暂存当前状态 git stash list # 查看保存的工作场景 git stash pop # 恢复保存的内容,并把stash中的内容删了 git rm -cached # 当文件add但缓冲区了用该命令撤销缓冲区的追踪 git log --pretty=oneline # 每行显示一条日志,且显示完整的hash git log --oneline # 每行显示一条日志,显示hash前7位 git reflog # 查看全部每次提交的hash前7位和message信息以及head跳转多少次可以跳转到哪里 # 前两个查看log只能查看当前到开始,第3个可以查看所有,并查看当前在哪个版本 git reset --hard ******* # 将head跳转至指定的版本 git reset --hard HEAD^ # 一个^回退一个版本,n个^就回退n个版本 git reset --hard HEAD~2 # 回退2个版本,可以回退n个版本 git reset --hard HEAD # 重置工作、暂存区至最近一次提交的状态 # hard、soft、mixed --hard: 在本地库移动HEAD指针;重置暂存区;重置工作区 --soft: 仅在本地库移动HEAD指针 --mixed: 本地库移动HEAD指针;重置缓暂存区 分支控制 # 同时并行推进多个功能模块的开发,多分支; # 单个分支功能开发失败不会影响其他分支,失败的分支删除重新开始即可; git branch -va # 查看分支列表 git branch # 查看当前分支 git checkout newBranch # 创建新分支newBranch git checkout -b newBranch # 创建新分支newBranch并切换到该分支 git checkout dev1.0 # 切换dev分支 git branch -d dev # 删除本地分支 git branch -D dev # 强行删除本地分支 git remote -v # 查看当前git远程地址 git branch -m master main # 重命名分支master为main 合并分支: 合并分支前请确保当前工作目录的所有修改已提交到代码仓库,否则将可能导致某些修改被丢弃并不可找回 例如:仓库有3个分支,分别为master、dev1.0、dev2.0,master为可对外应用的分支,dev1.0为提交给测试的分支,dev2.0为开发分支 现在dev1.0分支的所有功能已经测试通过,我当前在dev2.0上又做了更新,现在要将dev1.0合并到dev2.0上, 需要先将所有修改提交到dev2,否则当前工作区的修改将会倍舍弃,然后再进入到master分支,最后将dev1.0合并过来 将dev1.0分支的修改合并到master分支 git checkout master # 切换到master分支 git merge dev1.0 # 将dev1.0合并过来 git checkout dev2.0 # 返回到dev2.0分支,回到开发分支 合并失败/合并冲突: $ git merge main Auto-merging good.txt CONFLICT (content): Merge conflict in good.txt Automatic merge failed; fix conflicts and then commit the result.

​ 上述提示good.txt合并失败,有冲突,原因是两个分支都做了改动,自动合并不知道该保留哪个分支的;打开有冲突的文件,里面会以7个等号分格,其上到> main为合并过来的分支的内容,需要手动决定删除哪个内容,保留哪个内容;修改好后,执行git status会提示有未合并的路径和文件,使用git add 去标记该文件冲突已解决, 再次执行git status,如果还有冲突,git还会提示;如果没提示有冲突了,那就执行 git commit 完成合并,注意:这里commit后面不要任何参数,git会自动帮你生成一个 Merge branch ‘分支1’ into 分支2 的注释并打开vim编辑器,直接在vim中保存退出即可;当然也可以-m加上自己的注释,这样git就不会帮你添加注释了;合并完成后,git项目状态会从(main|MERGING)回到当前分支状态;

远程

远程gitlab或github建立一个远程项目;

git clone https://***.git # 复制一个远程库,并建立关联 git remote -v # 查看远程连接 git remote add origin https://github.com/jiliang-Li/testgit.git 给本地库添加一个远程项目地址,用origin指向https://...,origin是远程项目的引用 git remote remove origin # 删除一个远程关联 git push origin main # 将本地库推送到远程的main分支

合并远程分支:当别人开发的功能上传到远程后,我们需要拉取远程内容并合并到我们的项目库

pull = fetch + merge git fetch origin main # 拉取远程main分支本地库;不改变工作区内容 git merge origin/main # 合并远程main分支到本地,改变工作区 git pull origin main # 拉取远程main分支并合并本地库和工作区 ssh-keygen -t rsa -C ***@123.com # 为某个邮箱生成密钥对,远程添加公钥后,下次推送到远程就不需要再输入密码了; ssh-keygen # 直接运行该命令也可以生成针对本设备的密钥对 git push origin # 提交到origin远程的指定分支 git push origin --delete # 删除远程分支及其远程的关联分支 git push --set-upstream origin master # 设置默认push分支 git pull origin : # 将远程指定分支 拉取到 指定本地分支上 git pull -f origin 远程分支名:本地分支名 # 强制拉取合并 git pull origin # 将远程指定分支 拉取到 本地当前分支上 git remote remove # 删除某个关联仓库,比如remove origin 推现有文件夹 git init # 初始化项目库 git remote add origin [email protected]:path/proj.git # 关联远程仓库项目 git pull origin main # 先pull,将远端仓库的建项目时的初始化文件拉下来 git add . # 追踪所有内容 git commit -m "Initial commit" # 提交本地库 git push -u origin master # 推送到远程仓库 迁移git项目 git clone --mirror 项目原代码仓库地址 //将原仓库远程项目克隆到本地会生成一个 .git 文件 cd 生成的.git文件 //cd 进入(xxx.git)文件 git push --mirror 新项目代码仓库地址 //将本地克隆推送到新服务器 其他异常处理

(main|MERGING) # 合并、提交冲突 git reset --hard head # 重置当前的分支至上一次提交状态

如果时merge出现问题,就针对提示问题进行修复后提交 # 冲突 could not apply after resolving the conflicts........ git checkout --theirs / git checkout --ours

git cherry-pick id

有冲突时: git cherry-pick --abort # 放弃合并 git cherry-pick --continue # 解决某些冲突后,继续查看下一个冲突

git commit后,如何撤销commit 修改了本地的代码,然后使用:

1、git add file 2、git commit -m ‘提交信息’ 执行commit后,还没push到远程仓库时,想要撤销这次提交本地仓库的commit,该怎么办? 解决方法: 第一种:执行 git reset --soft HEAD~ 可成功撤销最近一次commit到本地仓库的提交,所有撤销的代码修改进入暂存区。 第二种:如果想要连着add也撤销的话,git reset --hard HEAD~(删除工作空间的改动代码,慎用)。 命令详解: HEAD~ 表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2 --soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file --hard 删除工作空间的改动代码,撤销commit且撤销add(慎用) 另外一点,如果commit注释写错了,先要改一下注释,有其他方法也能实现,如: git commit --amend 这时候会进入vim编辑器,修改完成你要的注释后保存即可。

================ 持续更新~,有遇到新的问题以及解决方案时,我会及时记录到这里,这只是我工作经验总结分享的一部分,如果有理解不到位的地方欢迎猿友们指正,非喜勿喷!!!☺☺☺



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3